package ar.edu.sovietrussia;

import exceptions.EmpatanEnTodoException;

public class PartidoDeCopa extends Partido {

	//---------INSTANCE VARIABLES--------------------------------------------------------//
	private PartidoSimple partidoDeIda;
	private PartidoSimple partidoDeVuelta;
	private int penalesLocal; 
	private int penalesVisitante;
	
	//---------CONSTRUCTORS-------------------------------------------------------------//
	
	public PartidoDeCopa(Equipo local, Equipo visitante) {
		super(local, visitante);
	}
	public PartidoDeCopa(){
		
	}
	
	//---------ACCESSORS---------------------------------------------------------------//
	
	public PartidoDeCopa(PartidoSimple partidoIda, PartidoSimple partidoVuelta) {
		super(partidoIda.getLocal(), partidoVuelta.getLocal());
		this.partidoDeIda = partidoIda;
		this.partidoDeVuelta = partidoVuelta;
	}

	public PartidoSimple getPartidoDeIda() {
		return partidoDeIda;
	}

	public void setPartidoDeIda(PartidoSimple partidoDeIda) {
		this.partidoDeIda = partidoDeIda;
	}

	public PartidoSimple getPartidoDeVuelta() {
		return partidoDeVuelta;
	}

	public void setPartidoDeVuelta(PartidoSimple partidoDeVuelta) {
		this.partidoDeVuelta = partidoDeVuelta;
	}
	
	public int getPenalesLocal() {
		return penalesLocal;
	}

	public void setPenalesLocal(int penalesLocal) {
		this.penalesLocal = penalesLocal;
	}

	public int getPenalesVisitante() {
		return penalesVisitante;
	}

	public void setPenalesVisitante(int penalesVisitante) {
		this.penalesVisitante = penalesVisitante;
	}
	
	
	//---------OTHER BEHAVIOR--------------------------------------------------------//

	public Equipo definirPorPenales(){
		if(this.getPenalesVisitante()==this.getPenalesLocal())
		{throw new EmpatanEnTodoException("Los Equipos empatan hasta en definicion de penales!");}
		
		if(this.getPenalesLocal()>this.getPenalesVisitante())
		{return this.getLocal();}
		else{return this.getVisitante();}
	}
	
	//------------//
	
	public boolean haveTied(){
		int golesLocal = this.partidoDeIda.getGolesLocal() + this.partidoDeVuelta.getGolesLocal();
		int golesVisitante = this.partidoDeIda.getGolesVisitante() + this.partidoDeVuelta.getGolesVisitante();
		
		if (golesLocal == golesVisitante){
			return true;
		}
		return false;
	}
	
	public Equipo whoWon(){
		Equipo winner;
		int golesLocal = this.partidoDeIda.getGolesLocal() + this.partidoDeVuelta.getGolesLocal();
		int golesVisitante = this.partidoDeIda.getGolesVisitante() + this.partidoDeVuelta.getGolesVisitante();
		
		if(golesLocal>golesVisitante){winner = this.getLocal();}
		else{if(golesLocal<golesVisitante){winner = this.getVisitante();}
			else{winner = this.definirPorPenales();}}
		
		return winner;
	}
}
